package com.utn.tp.integrador.manejomensajes;

import java.util.ArrayList;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import com.utn.tp.integrador.entidades.MensajeWeb;

public class ManejadorMensajesWeb extends DefaultHandler {
	private boolean bresultOk;
	private boolean mess = false;
	private ArrayList<MensajeWeb> mensajes;
	private MensajeWeb mensajeWeb;
	private String mensajeError = "ok";

	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		super.characters(ch, start, length);
		String mensaje = new String(ch, start, length);
		mensajeWeb.setMensaje(mensaje);
		mensajes.add(mensajeWeb);
	}

	protected ArrayList<MensajeWeb> getArrayListMensajeWeb() {
		return new ArrayList<MensajeWeb>();
	}

	public String getMensajeError() {
		return mensajeError;
	}

	public ArrayList<MensajeWeb> getMensajes() {
		return mensajes;
	}

	protected MensajeWeb getMensajeWeb() {
		return new MensajeWeb();
	}

	public boolean isBresultOk() {
		return bresultOk;
	}

	public boolean isMensajes() {
		return mess;
	}

	@Override
	public void startDocument() throws SAXException {
		super.startDocument();
		mensajes = getArrayListMensajeWeb();
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		super.startElement(uri, localName, qName, attributes);
		if (localName == null) {
			localName = qName;

		}
		if ("result".equals(localName)) {

			int length = attributes.getLength();
			for (int i = 0; i < length; i++) {
				String name = attributes.getQName(i);
				if (name.equals("type")) {
					String value = attributes.getValue(i);
					if (value.equals("success"))
						bresultOk = true;
					if (value.equals("error"))
						bresultOk = false;
				}

			}
		}
		if ("message".equals(localName)) {

			String remitente = "";
			String time = "";
			int length = attributes.getLength();
			// Each attribute
			for (int i = 0; i < length; i++) {
				// Get names and values to each attribute
				String name = attributes.getQName(i);
				if (name.equals("from")) {
					remitente = attributes.getValue(i);
				}
				if (name.equals("timestamp")) {
					time = attributes.getValue(i);
				}
			}
			mensajeWeb = getMensajeWeb();
			mensajeWeb.setRemitente(remitente);
			mensajeWeb.setFecha(time);
			mess = true;

		}
		if (localName.equals("detail")) {
			int length = attributes.getLength();
			// Each attribute
			for (int i = 0; i < length; i++) {
				// Get names and values to each attribute
				String name = attributes.getQName(i);
				if (name.equals("description")) {
					mensajeError = attributes.getValue(i);

				}

			}

		}
	}

}
